home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 8.8 KB | 290 lines | [TEXT/MPS ] |
- (*
- File: Fonts.mod
-
- Contains: Font Manager Interfaces.
-
- Version: Technology: System 7.5
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE Fonts;
-
- IMPORT SYSTEM, Types;
-
- (* $PUSH*)
- (* $ALIGN MAC68K*)
- (* $LibExport+*)
-
- CONST
- systemFont* = 0;
- applFont* = 1;
- newYork* = 2;
- geneva* = 3;
- monaco* = 4;
- venice* = 5;
- london* = 6;
- athens* = 7;
- sanFran* = 8;
- toronto* = 9;
- cairo* = 11;
- losAngeles* = 12;
- times* = 20;
- helvetica* = 21;
- courier* = 22;
- symbol* = 23;
- mobile* = 24;
- commandMark* = 17;
- checkMark* = 18;
- diamondMark* = 19;
-
- appleMark* = 20;
- propFont* = 36864;
- prpFntH* = 36865;
- prpFntW* = 36866;
- prpFntHW* = 36867;
- fixedFont* = 45056;
- fxdFntH* = 45057;
- fxdFntW* = 45058;
- fxdFntHW* = 45059;
- fontWid* = 44208;
-
-
- TYPE
- FMInput* = (*ΔΔPACKEDΔΔ*) RECORD
- family*: INTEGER;
- size*: INTEGER;
- face*: Types.Style;
- needBits*: BOOLEAN;
- device*: INTEGER;
- numer*: Types.Point;
- denom*: Types.Point;
- END;
-
- FMOutput* = (*ΔΔPACKEDΔΔ*) RECORD
- errNum*: INTEGER;
- fontHandle*: Types.Handle;
- boldPixels*: Types.UInt8;
- italicPixels*: Types.UInt8;
- ulOffset*: Types.UInt8;
- ulShadow*: Types.UInt8;
- ulThick*: Types.UInt8;
- shadowPixels*: Types.UInt8;
- extra*: Types.SInt8;
- ascent*: Types.UInt8;
- descent*: Types.UInt8;
- widMax*: Types.UInt8;
- leading*: Types.SInt8;
- curStyle*: Types.SInt8;
- numer*: Types.Point;
- denom*: Types.Point;
- END;
-
- FMOutPtr* = POINTER TO FMOutput;
-
- FontRec* = RECORD
- fontType*: INTEGER; (*font type*)
- firstChar*: INTEGER; (*ASCII code of first character*)
- lastChar*: INTEGER; (*ASCII code of last character*)
- widMax*: INTEGER; (*maximum character width*)
- kernMax*: INTEGER; (*negative of maximum character kern*)
- nDescent*: INTEGER; (*negative of descent*)
- fRectWidth*: INTEGER; (*width of font rectangle*)
- fRectHeight*: INTEGER; (*height of font rectangle*)
- owTLoc*: INTEGER; (*offset to offset/width table*)
- ascent*: INTEGER; (*ascent*)
- descent*: INTEGER; (*descent*)
- leading*: INTEGER; (*leading*)
- rowWords*: INTEGER; (*row width of bit image / 2 *)
- END;
-
- FMetricRec* = RECORD
- ascent*: Types.Fixed; (*base line to top*)
- descent*: Types.Fixed; (*base line to bottom*)
- leading*: Types.Fixed; (*leading between lines*)
- widMax*: Types.Fixed; (*maximum character width*)
- wTabHandle*: Types.Handle; (*handle to font width table*)
- END;
-
- FMetricRecPtr* = POINTER TO FMetricRec;
- FMetricRecHandle* = HANDLE TO FMetricRec (*ΔΔ POINTER TO FMetricRecPtr*);
-
- WidEntry* = RECORD
- widStyle*: INTEGER; (*style entry applies to*)
- END;
-
- WidTable* = RECORD
- numWidths*: INTEGER; (*number of entries - 1*)
- END;
-
- AsscEntry* = RECORD
- fontSize*: INTEGER;
- fontStyle*: INTEGER;
- fontID*: INTEGER; (*font resource AIFF.ID*)
- END;
-
- FontAssoc* = RECORD
- numAssoc*: INTEGER; (*number of entries - 1*)
- END;
-
- StyleTable* = RECORD
- fontClass*: INTEGER;
- offset*: LONGINT;
- reserved*: LONGINT;
- indexes*: (*ΔΔPACKEDΔΔ*) ARRAY 48 (*ΔΔ[0..47]ΔΔ*) OF CHAR;
- END;
-
- NameTable* = RECORD
- stringCount*: INTEGER;
- baseFontName*: Types.Str255;
- END;
-
- KernPair* = RECORD
- kernFirst*: CHAR; (*1st character of kerned pair*)
- kernSecond*: CHAR; (*2nd character of kerned pair*)
- kernWidth*: INTEGER; (*kerning in 1pt fixed format*)
- END;
-
- KernEntry* = RECORD
- kernStyle*: INTEGER; (*style the entry applies to*)
- kernLength*: INTEGER; (*length of this entry*)
- END;
-
- KernTable* = RECORD
- numKerns*: INTEGER; (*number of kerning entries*)
- END;
-
- WidthTable* = (*ΔΔPACKEDΔΔ*) RECORD
- tabData*: ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF Types.Fixed; (*character widths*)
- tabFont*: Types.Handle; (*font record used to build table*)
- sExtra*: LONGINT; (*space extra used for table*)
- style*: LONGINT; (*extra due to style*)
- fID*: INTEGER; (*font family AIFF.ID*)
- fSize*: INTEGER; (*font size request*)
- face*: INTEGER; (*style (face) request*)
- device*: INTEGER; (*device requested*)
- inNumer*: Types.Point; (*scale factors requested*)
- inDenom*: Types.Point; (*scale factors requested*)
- aFID*: INTEGER; (*actual font family AIFF.ID for table*)
- fHand*: Types.Handle; (*family record used to build up table*)
- usedFam*: BOOLEAN; (*used fixed point family widths*)
- aFace*: Types.UInt8; (*actual face produced*)
- vOutput*: INTEGER; (*vertical scale output value*)
- hOutput*: INTEGER; (*horizontal scale output value*)
- vFactor*: INTEGER; (*vertical scale output value*)
- hFactor*: INTEGER; (*horizontal scale output value*)
- aSize*: INTEGER; (*actual size of actual font used*)
- tabSize*: INTEGER; (*total size of table*)
- END;
-
- FamRec* = RECORD
- ffFlags*: INTEGER; (*flags for family*)
- ffFamID*: INTEGER; (*family AIFF.ID number*)
- ffFirstChar*: INTEGER; (*ASCII code of 1st character*)
- ffLastChar*: INTEGER; (*ASCII code of last character*)
- ffAscent*: INTEGER; (*maximum ascent for 1pt font*)
- ffDescent*: INTEGER; (*maximum descent for 1pt font*)
- ffLeading*: INTEGER; (*maximum leading for 1pt font*)
- ffWidMax*: INTEGER; (*maximum widMax for 1pt font*)
- ffWTabOff*: LONGINT; (*offset to width table*)
- ffKernOff*: LONGINT; (*offset to kerning table*)
- ffStylOff*: LONGINT; (*offset to style mapping table*)
- ffProperty*: ARRAY 9 (*ΔΔ[0..8]ΔΔ*) OF INTEGER; (*style property info*)
- ffIntl*: ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF INTEGER; (*for international use*)
- ffVersion*: INTEGER; (*version number*)
- END;
-
-
- PROCEDURE InitFonts*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A8FE;
- (*$END*)
- PROCEDURE GetFontName*(familyID: INTEGER; VAR name: Types.Str255);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A8FF;
- (*$END*)
- PROCEDURE GetFNum*(name: Types.ConstStr255Param; VAR familyID: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A900;
- (*$END*)
- PROCEDURE RealFont*(fontNum: INTEGER; size: INTEGER): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A902;
- (*$END*)
- PROCEDURE SetFontLock*(lockFlag: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A903;
- (*$END*)
- PROCEDURE FMSwapFont*((*CONST*)VAR inRec: FMInput): FMOutPtr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A901;
- (*$END*)
- PROCEDURE SetFScaleDisable*(fscaleDisable: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A834;
- (*$END*)
- PROCEDURE FontMetrics*(theMetrics: FMetricRecPtr);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A835;
- (*$END*)
- PROCEDURE SetFractEnable*(fractEnable: BOOLEAN);
- EXTERNAL PASCAL;
- PROCEDURE GetDefFontSize*(): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $3EB8, $0BA8, $6604, $3EBC, $000C;
- (*$END*)
- PROCEDURE IsOutline*(numer: Types.Point; denom: Types.Point): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7000, $A854;
- (*$END*)
- PROCEDURE SetOutlinePreferred*(outlinePreferred: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7001, $A854;
- (*$END*)
- PROCEDURE GetOutlinePreferred*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7009, $A854;
- (*$END*)
- PROCEDURE OutlineMetrics*(byteCount: INTEGER; textPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; numer: Types.Point; denom: Types.Point; VAR yMax: INTEGER; VAR yMin: INTEGER; awArray: Types.(*ΔΔ Fixed*)Ptr; lsbArray: Types.(*ΔΔ Fixed*)Ptr; boundsArray: Types.RectPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7008, $A854;
- (*$END*)
- PROCEDURE SetPreserveGlyph*(preserveGlyph: BOOLEAN);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $700A, $A854;
- (*$END*)
- PROCEDURE GetPreserveGlyph*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $700B, $A854;
- (*$END*)
- PROCEDURE FlushFonts*(): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $700C, $A854;
- (*$END*)
- PROCEDURE GetSysFont*(): INTEGER;
- (*$IF NOT CFMSYSTEMCALLS*)
- INLINE PASCAL $3EB8, $0BA6; (* MOVE.w $0BA6,(SP) *)
- (*$END*)
-
- PROCEDURE GetAppFont*(): INTEGER;
- (*$IF NOT CFMSYSTEMCALLS*)
- INLINE PASCAL $3EB8, $0984; (* MOVE.w $0984,(SP) *)
- (*$END*)
-
-
- (* $ALIGN RESET*)
- (* $POP*)
-
- END Fonts.
-